package org.gushi.graph.a01;

/**
 *
 * @param <V> 顶点的值
 * @param <E> 权值
 */
public interface Graph<V,E> {

    /**
     * 边的数量
     * @return
     */
    int edgesSize();

    /**
     * 顶点的数量
     * @return
     */
    int verticesSize();



    void addVertex(V v);

    void addEdge(V from, V to);

    void addEdge(V from, V to, E weight);



    void removeVertex(V v);
    void removeEdge(V from, V to);

    /**
     * 广度优先遍历
     * @param begin
     */
    void bfs(V begin);


    /**
     * 深度优先遍历
     * @param begin
     */
    void dfs(V begin);




}
